/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package agenda.contato.DAL;

import agenda.contato.Contato;
import agenda.contato.Endereco;
import agenda.contato.Telefone;
import framework.dal.BasicDAL;
import framework.dal.Conexao;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author Sergio Carlos Peres
 */
public class ContatoDAL extends BasicDAL{
    // idcontato, nome, email, endereco, numero, cidade, estado, paiz, residencial, comercial, celular, outro, data, bairro
    
    public ContatoDAL() {
        con = new Conexao();
    }
    
    @Override
    public void salvar(Object o) {
        Contato c = (Contato) o;
        String sql = "INSERT INTO contato " 
                + "(nome, email, endereco, numero, bairro, cidade, estado, paiz,"
                + " residencial, comercial, celular, outro, data) VALUES ('"
                + c.getNome() + "','" + c.getEmail() + "','" 
                + c.getEndereco().getLogradouro() + "'," + c.getEndereco().getNumeno() + ",'" 
                + c.getEndereco().getBairro()  + "','" + c.getEndereco().getCidade() + "','" 
                + c.getEndereco().getEstado() + "','" + c.getEndereco().getPaiz()  + "','" 
                + c.getTelefone().getResidencial() + "','" + c.getTelefone().getComercial() + "','" 
                + c.getTelefone().getCelular() + "','" + c.getTelefone().getOutro() + "','" 
                + c.getData() + "');";
        
        con.conecta();
        con.executeScriptVoid(sql);
        con.desconecta();
    }
    
    @Override
    public Object buscaAlterar(Object o) {
        Contato c = (Contato) o;
        String sql = "SELECT * FROM contato WHERE nome LIKE '" 
                + c.getNome()+ "%' AND email = '" 
                + c.getEmail() + "'";
        
        c.setEndereco(new Endereco());
        c.setTelefone(new Telefone());
        
        con.conecta();
        con.executeSelect(sql);
        try {
            con.resultset.next();
            c.setCodigo(con.resultset.getInt("idcontato"));
            c.setData(con.resultset.getTimestamp("data"));
            
            c.getEndereco().setLogradouro(con.resultset.getString("endereco"));
            c.getEndereco().setNumeno(con.resultset.getInt("numero"));
            c.getEndereco().setBairro(con.resultset.getString("bairro"));
            c.getEndereco().setCidade(con.resultset.getString("cidade"));
            c.getEndereco().setEstado(con.resultset.getString("estado"));
            c.getEndereco().setPaiz(con.resultset.getString("paiz"));
            
            c.getTelefone().setResidencial(con.resultset.getString("residencial"));
            c.getTelefone().setComercial(con.resultset.getString("comercial"));
            c.getTelefone().setCelular(con.resultset.getString("celular"));
            c.getTelefone().setOutro(con.resultset.getString("outro"));
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro na busca de um contato!!!");
        }
        con.desconecta();
        return c;
    }
    
    @Override
    public void alterar(Object o) {
        Contato c = (Contato) o;
        String sql = "UPDATE contato SET " 
                + "nome = '" + c.getNome()
                + "', email = '" + c.getEmail()
                + "', endereco = '" + c.getEndereco().getLogradouro()
                + "', numero = " + c.getEndereco().getNumeno()
                + ", bairro = '" + c.getEndereco().getBairro()
                + "', cidade = '" + c.getEndereco().getCidade()
                + "', estado = '" + c.getEndereco().getEstado()
                + "', paiz = '" + c.getEndereco().getPaiz()
                + "', residencial = '" + c.getTelefone().getResidencial()
                + "', comercial = '" + c.getTelefone().getComercial()
                + "', celular = '" + c.getTelefone().getCelular()
                + "', outro = '" + c.getTelefone().getOutro()
                + "', data = '" + c.getData()
                + "' WHERE idcontato = " + c.getCodigo();
        
        con.conecta();
        con.executeScriptVoid(sql);
        con.desconecta();
    }
    
    @Override
    public void delet(int codigo) {
        con.conecta();
        try {
            String sql = "SELECT nome FROM contato WHERE idcontato = " + codigo;
            con.executeSelect(sql);
            con.resultset.first();
            String confirma;
            confirma = "Tem certeza que desena Excluir : \n\n\t" + con.resultset.getString("nome") + " ?";

            int opcao = JOptionPane.showConfirmDialog(null,confirma,"Exclusão ",JOptionPane.YES_NO_OPTION);
            if (opcao == JOptionPane.YES_OPTION)
            {
                sql = "DELETE FROM contato WHERE idcontato = " + codigo;
                int conseguiu = con.executeScriptInt(sql);
                if (conseguiu == 1)
                {
                    JOptionPane.showMessageDialog(null,"Exclusão realizada com sucesso!!!");
                }
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro ao tentar excluir...\n\n\tErro: "+ex);
        }
        con.desconecta();
    }
}
